package club.banyuan.video;

public class VideoStore {

  private Video[] videos = new Video[10];
  private int count;

  /**
   * 添加一个新的电影
   * 通过电影的名称创建一个video对象，将对象保存在数组中
   *
   * @param name 电影的名称
   */
  public void addVideo(String name) {
    if (count > 10) {
      System.out.println("装不下");
      return;
    }
    Video v1 = new Video();
    v1.setName(name);
    videos[count] = v1;
    count++;
  }

  /**
   * 根据片名借出电影
   *
   * @return 成功借出电影，返回true,如果片名不存在，则返回false
   */
  public boolean checkOut(String videoName) {
    Video video = findVideoByName(videoName);
    if (video != null) {
      return video.setRent(true);
    }
    return false;
  }
  // public boolean checkOut(String videoName) {
  //   for (int i = 0; i < count; i++) {
  //     if (videos[i].getName().equals(videoName)) {
  //       if (videos[i].isRent()) {
  //         System.out.println("这个电影已经被借出：" + videoName);
  //         return false;
  //       } else {
  //         videos[i].setRent(true);
  //         System.out.println("操作成功！");
  //         return true;
  //       }
  //     }
  //   }
  //   System.out.println("没有这个电影：" + videoName);
  //   return false;
  // }

  /**
   * 归还电影
   *
   * @return 成功归还电影，返回true,如果片名不存在，则返回false
   */
  public boolean returnVideo(String videoName) {
    Video video = findVideoByName(videoName);
    if (video != null) {
      return video.setRent(false);
    }
    return false;
  }
  //
  // public boolean returnVideo(String videoName) {
  //   for (int i = 0; i < count; i++) {
  //     if (videos[i].getName() == videoName) {
  //       if (videos[i].isRent()) {
  //         videos[i].setRent(false);
  //         System.out.println("状态成功");
  //         return true;
  //       } else {
  //         System.out.println("电影状态不对");
  //         return false;
  //       }
  //     }
  //   }
  //   System.out.println("没有这个电影：" + videoName);
  //   return false;
  // }

  /**
   * 根据 电影名称查询电影
   *
   * @param videoName
   * @return 匹配到的电影，如果找不到对应名称的电影，返回null
   */
  private Video findVideoByName(String videoName) {
    for (int i = 0; i < count; i++) {
      if (videos[i].getName() == videoName) {
        return videos[i];
      }
    }
    System.out.println("没有这个电影：" + videoName);
    return null;
  }

  /**
   * 设置用户对电影的评分(1~5)，收到评分之后，计算该电影的平均评分，
   */
  public void receiveRating(String videoName, int mark) {
    Video videoByName = findVideoByName(videoName);
    if (videoByName != null) {
      videoByName.setMark(mark);
    }
  }

  // public void receiveRating(String videoName, int mark) {
  //   Video videoByName = findVideoByName(videoName);
  //   int ret;
  //   if (videoByName != null) {
  //     ret = (videoByName.getMark() * videoByName.getMarkTimes() + mark) /
  //         (videoByName.getMarkTimes() + 1);
  //     videoByName.setMarkTimes(videoByName.getMarkTimes() + 1);
  //     videoByName.setMark(ret);
  //   }
  // }

  //
  // 然后保存到Video的评分属性中

  /**
   * 列出整个库存的电影。
   * 电影名称  是否被借出   平均评分
   */
  // public void listInventory() {
  //   StringBuilder stringBuilder = new StringBuilder();
  //   for (int i = 0; i < count; i++) {
  //     stringBuilder.append("电影名称是").append(videos[i].getName());
  //     if (videos[i].isRent()) {
  //       stringBuilder.append("没有被借出,平均评分为");
  //     } else {
  //       stringBuilder.append("已被借出,平均评分为");
  //     }
  //     stringBuilder.append(videos[i].getMark());
  //     System.out.println(stringBuilder.toString());
  //     stringBuilder.delete(0, stringBuilder.capacity() - 1);
  //   }
  // }
  public void listInventory() {
    for (int i = 0; i < count; i++) {
      String rentMsg = "没有被借出";
      if (videos[i].isRent()) {
        rentMsg = "已被借出";
      }
      System.out.println("电影名称是" + videos[i].getName() + rentMsg + "平均评分为" + videos[i].getMark());
    }
  }

  // public void listInventory() {
  //   for (int i = 0; i < count; i++) {
  //     if (videos[i].isRent()) {
  //       System.out.println("电影名称是" + videos[i].getName() + "没有被借出" + "平均评分为" + videos[i].getMark());
  //     } else {
  //       System.out.println("电影名称是" + videos[i].getName() + "已被借出" + "平均评分为" + videos[i].getMark());
  //     }
  //   }
  // }

  public static void main(String[] args) {
    VideoStore videoStore = new VideoStore();
    videoStore.addVideo("黑客帝国");
    videoStore.addVideo("教父");
    videoStore.addVideo("沉默的羔羊");
    videoStore.listInventory();
    videoStore.checkOut("教父");
    videoStore.listInventory();
    videoStore.returnVideo("教父");
    videoStore.receiveRating("教父", 4);
    videoStore.listInventory();

  }
}
